diff --git a/steamclient_main.c b/steamclient_main.c
index 1322eaa..de54021 100644
--- a/steamclient_main.c
+++ b/steamclient_main.c
@@ -4,6 +4,11 @@
 #include <dlfcn.h>
 #include <limits.h>
 #include <stdint.h>
+#include <fcntl.h>
+#include <dirent.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <linux/joystick.h>
 
 #include "windef.h"
 #include "winbase.h"
@@ -402,11 +406,66 @@ void *create_win_interface(const char *name, void *linux_side)
     struct steamclient_interface *e;
     void *ret = NULL;
     int i;
+    const char *sgi = getenv("SteamGameId");
 
     TRACE("trying to create %s\n", name);
 
     if (!linux_side)
         return NULL;
+    
+    if(sgi && !strcmp(sgi, "230410") && (!strcmp(name,"SteamController007") || !strcmp(name,"SteamInput001")))
+    {
+        DIR *d;
+        struct dirent *dir;
+        char path[] = "/dev/input/";
+        d = opendir(path);
+        int js = 0;
+
+        if(d)
+        {
+            TRACE("Reading contents of %s\n", "/dev/input");
+            while ((dir = readdir(d)) != NULL)
+            {
+                TRACE("Checking %s for joystick device\n", dir->d_name);
+                if(strcasestr(dir->d_name,"js"))
+                {
+                    TRACE("Found %s marked as joystick device, attempting to read device\n", dir->d_name);
+                    char jsdevice[128];
+                    strcpy(jsdevice,path);
+                    strcat(jsdevice,dir->d_name);
+                    int fd = open (jsdevice, O_RDONLY);
+                    if(fd>0)
+                    {
+                        TRACE("%s successfully read, checking for device name\n", jsdevice);
+                        char jsname[128];
+
+                        if (ioctl(fd, JSIOCGNAME(sizeof(jsname)), jsname) < 0)
+                        {
+		             strncpy(jsname, "Unknown", sizeof(jsname));
+                        }
+
+                        TRACE("Verifying if %s is joystick\n", jsname);
+                        if (!strcasestr(jsname,"mouse") && !strcasestr(jsname,"keyboard") )
+                        {
+                            TRACE("Joystick device verified, loading %s\n", name);
+                            js++;
+                            close(fd);
+                            break;
+                        }
+                    }
+                    close(fd);
+                }
+            }
+            closedir(d);
+        }
+
+        if(js<1)
+        {
+            TRACE("No joystick devices detected, disabling: %s\n", name);
+            return NULL;
+        }
+    }
+
 
     EnterCriticalSection(&steamclient_cs);
 
